The present invention relates to a statistical multiplexer for coding and multiplexing multiple channels of digital television data.
Digital television has become increasingly popular due to the high quality video image it provides, along with informational and entertainment features, such as pay-per-view, electronic program guides, video-on-demand, stock, weather and stock information, Internet hyperlinks, and so forth. Such television data can be communicated to a user, for example, via a broadband communication network, such as a satellite or cable television network, or via a computer network.
However, due to the bandwidth limitations of the communication channel, it is necessary to adjust a bit rate of the digital video programs that are encoded and multiplexed for transmission in a compressed bit stream. A goal of such bit rate adjustment is to meet the constraint on the total bit rate of the multiplexed stream, while also maintaining a satisfactory video quality for each program.
Accordingly, various types of statistical multiplexers have been developed that evaluate statistical information of the source video that is being encoded, and allocate bits for coding the different video channels accordingly. For example, video channels that have hard-to-compress video, such as a fast motion scene, can be allocated more bits, while channels with relatively easy to compress scenes, such as scenes with little motion, can be allocated fewer bits.
In MPEG-2 digital video systems, the complexity of a video frame is measured by the product of the quantization level (QL) used to encode that frame and the number of bits used for coding the frame (R). This means the complexity of a frame is not known until it has been encoded. As a result, the complexity information always lags behind the actual encoding process, which requires the buffering of a number of frames prior to encoding, thereby adding expense and complexity. This kind of look-behind information may be avoided by using some pre-encoding statistics about the video, such as intra-frame activity, or motion estimation (ME) scores as a substitute for the traditional complexity measure. However, the relationship between the pre-encoding statistics of a video frame and the complexity of that frame may not be direct, and sometimes the relationship may change due to the changing subject matter of the source video.
Accordingly, there is a need for an improved statistical multiplexing system. Such a system should employ a number of individual encoders that encode data from a number of incoming channels of source video data. This data may be obtained from a storage media, live feed, or the like.
The system should dynamically allocate bits to the individual encoders to encode frames of video data from the channels.
The system should use pre-encoding statistics of the source video frames that are closely related to the complexity of the frames, and which account for changing content in the source video.
The system should be usable with essentially any type of video data, including high-definition (HD) and standard-definition (SD) television (TV).
The present invention provides a system having the above and other advantages.
The present invention relates to a statistical multiplexer for coding and multiplexing multiple channels of digital television data.
Bandwidth is dynamically allocated among a number of variable bit rate (VBR) video services that are multiplexed to form a fixed bit rate transport bit stream.
Since a video service""s need for bandwidth varies with the amount of information in the video content, it is more efficient for bandwidth usage to allocate the total available bandwidth dynamically among the services according to the need of the individual service instead of using a fixed allocation.
The present invention achieves this goal by providing a number of advantageous features, including:
1. Using the coding complexity of previous frames (in encoding order) to estimate a need parameter for a current frame.
2. Using a relative change in the intra-frame activity of the picture, calculated at least one frame time ahead of encoding, to adjust the need parameter of I-frames.
3. Using a relative change in a motion estimation score of the picture, calculated one frame time ahead of encoding, to adjust the need parameter of P- and B-frames.
4. Using scene change information to adjust the need parameter.
5. Boosting the need parameter for scenes where artifacts can be more visible, such as low spatial complexity or slow motion scenes.
6. Boosting the need parameter when the number of bits generated in the previous frames exceeds the available bit budget.
The stat mux system includes three distinct parts:
1) The collection of visual characteristics and complexity information for individual video channels and a need parameter is generated for each video channel to indicate how difficult it is to compress that channel. This process is repeated once per frame and it is done by the individual single-channel encoders (which could be SD and/or HD).
2) The most up-to-date need parameters from all the video channels are collected by a quantization level processor (QLP), or rate control processor. The rate control processor assigns an encoding bandwidth to each video channel in the form of an encoding bit rate. Each channel receives a different encoding bit rate based on its need parameter in relation to the needs of all the other channels. The encoding bit rate is used to control the video encoding of individual channels. The rate control processor also assigns transmission bit rates to the channels, which determine how many bits are sent by each video channel to a decoder.
3) The single-channel encoder uses the encoding bit rate it is given to perform video compression. The primary task here is a rate control function, which involves using the encoding bit rate and the relative complexities of different frame-types (i.e., I, B and P types) to assign a target bit budget for each frame it is about to encode.
A particular method for allocating bits in a statistical multiplexer for coding a plurality of channels of video data sources comprising respective video pictures, includes the step of: for each channel, obtaining a bit rate need parameter for a current picture, which has an associated picture type, by scaling at least one complexity measure that is based on at least one previous picture of the same type, and by scaling at least one complexity measure that is based on at least one previous picture of a different type. An encoding bit rate is allocated for coding the current picture of each channel according to the bit rate need parameter thereof.
Note that the pictures can be, e.g., frames or fields.
A corresponding apparatus is also presented.